widget: Don't try to propagate 0 state flags
authorTimm Bäder <mail@baedert.org>
Tue, 1 Aug 2017 19:30:20 +0000 (21:30 +0200)
committerTimm Bäder <mail@baedert.org>
Wed, 2 Aug 2017 06:58:30 +0000 (08:58 +0200)
This happens quite often and has no effect anyway.

gtk/gtkwidget.c

index a479eda879247b36a138393d8736c0d8ff7e9d75..a034614d4beb6a239f95c16d9453fc7fbcfa6c8b 100644 (file)
@@ -10933,11 +10933,15 @@ gtk_widget_propagate_state (GtkWidget    *widget,
       child_data.flags_to_set = data->flags_to_set & GTK_STATE_FLAGS_DO_PROPAGATE;
       child_data.flags_to_unset = data->flags_to_unset & GTK_STATE_FLAGS_DO_PROPAGATE;
 
-      for (child = _gtk_widget_get_first_child (widget);
-           child != NULL;
-           child = _gtk_widget_get_next_sibling (child))
+      if (child_data.flags_to_set != 0 ||
+          child_data.flags_to_unset != 0)
         {
-          gtk_widget_propagate_state (child, &child_data);
+          for (child = _gtk_widget_get_first_child (widget);
+               child != NULL;
+               child = _gtk_widget_get_next_sibling (child))
+            {
+              gtk_widget_propagate_state (child, &child_data);
+            }
         }
 
       g_object_unref (widget);